//
//  Krahets.swift
//  SFQuestion
//
//  Created by liusr on 2024/2/1.
//

import Foundation

//k神题目


class Krahets {
    //letcode 21 合并两个有序链表
    func mergeTwoLists(_ list1: ListNode?, _ list2: ListNode?) -> ListNode? {
        var p1 = list1
        var p2 = list2
        var p: ListNode? = ListNode(0)
        while p1 != nil && p2 != nil {
            if p1?.val ?? 0 <= p2?.val ?? 0 {
                p?.next = p1
                p1 = p1?.next
            } else {
                p?.next = p2
                p2 = p2?.next
            }
            p = p?.next
        }
        
        if p1 == nil {
            p?.next = p2
        }
        
        if p2 == nil {
            p?.next = p1
        }
        
        //这个不对  p已经跟着走了 没有记下头结点来
        // 应该一开始 var root = p//记下头结点  然后返回root的next
        // 之所以提前弄个头结点 就不用一开始判断大小 找头结点了 代码更简洁 流程清晰
        return p?.next
    }
    
    
    
}
